[新機能] SQSでサーバサイド暗号化(SSE)がサポートされました
こんにちは。菊池です。
昨日、2017年4月28日のアップデートにて、Amazon Simple Queue Service(SQS)でのサーバサイド暗号化(SSE)が利用可能になりました。
- Amazon Simple Queue Service (SQS) Introduces Server-Side Encryption for Queues
- Protecting Data Using Server-Side Encryption (SSE) and AWS KMS
現時点でオレゴンリージョン、オハイオリージョンの2つのリージョンで利用可能です。
試してみた
早速試してみました。
SSEに対応した、オレゴンリージョンで新規にキューを作成します。SSEはスタンダードキュー、FIFOキューのどちらでも利用可能です。
[キューの設定]で、SSEを有効化します。
まずはKMSのカスタマーマスターキーにはデフォルトを選択しました。
キューが作成されました。[暗号化]タブでSSEの設定が確認できます。
作成したキューにメッセージを送信してみます。デフォルトキーを利用したので、SQSの利用権限さえあれば特に問題なくキューへのメッセージ送受信は可能です。
$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message" { "MD5OfMessageBody": "c72b9698fa1927e1dd12d3cf26ed84b2", "MessageId": "3b9cc08d-7482-475d-9b8b-78c2451ea786" }
次に、KMSのカスタマーマスターキーを変更して試してみます。KMSのマスターキー作成には、IAMのメニューから[暗号化キー]を選択し、[キーの作成]から進みます。
作成したカスタマーマスターキーをキューに設定します。作成済みのキューからも、設定変更が可能です。
作成したカスタマーマスターキーを利用してSQSのSSEを使う場合には、CMKキーポリシーで利用するIAMユーザ/ロールがキーユーザーに設定されている必要があります。
キーユーザーに設定されたIAMユーザ/ロールからは特に意識することなく、サービスを利用することが可能です。
$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message" { "MD5OfMessageBody": "c72b9698fa1927e1dd12d3cf26ed84b2", "MessageId": "1dcb3dcc-e55e-494c-b7d1-c127e9c16df1" }
キーユーザーに設定されていないIAMユーザ/ロールを使ってSQSにメッセージを送信してみると、以下のようにデータキーの生成ができず、エラーとなりました。
$ aws --region us-west-2 sqs send-message --queue-url https://sqs.us-west-2.amazonaws.com/xxxxxxxxxxxx/test-que --message-body "test message" An error occurred (KMS.AccessDeniedException) when calling the SendMessage operation: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/sqsUser/i-xxxxxxxxxxxxxxxx is not authorized to perform: kms:GenerateDataKey on resource: arn:aws:kms:us-west-2:xxxxxxxxxxxx:key/7805fc3c-8927-4dcd-8238-xxxxxxxxxxxx (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 27906070-2cb7-11e7-97ba-712889b5df06)
注意事項
現時点ではSSEを有効化したキューに対し、以下のサービスとの連携がサポートされません。
- Amazon CloudWatch Events
- Amazon S3 Event Notifications
- Amazon SNS Topic Subscriptions
- Auto Scaling Lifecycle Hooks
- AWS IoT Rule Actions
- AWS Lambda Dead Letter Queues
まとめ
以上です。
今回のアップデートにより、セキュリティポリシー上キーのメッセージを暗号化する必要がある場合に、手間をかけずにサーバーサイド暗号化を実現可能になりました。セキュリティ要件に応じて必要な手段が、サービスとしてサポートされているのは非常にありがたいですね。